package org.dromara.common.social.maxkey;

import me.zhyd.oauth.config.AuthSource;
import me.zhyd.oauth.request.AuthDefaultRequest;


/**
 * @Author 刘武贵
 * @Date 2024/8/15 22:00
 * @Description 功能描述：Oauth2 默认接口说明
 */
/**
 * 认证最大键源枚举类，实现了认证源接口
 * 该枚举类用于定义系统中可能存在的不同认证源，提供了一种统一的认证源管理方式
 */
public enum AuthMaxKeySource implements AuthSource {

    /**
     * 自己搭建的 maxkey 私服
     */
    MAXKEY {

        /**
         * 授权的api
         * 根据OAuth 2.0协议获取授权端点URL
         * 此方法通过返回授权服务的URL，用于下一步的授权流程
         *
         * @return 授权端点URL作为字符串
         */
        @Override
        public String authorize() {
            return AuthMaxKeyRequest.SERVER_URL + "/sign/authz/oauth/v20/authorize";
        }

        /**
         * 获取accessToken的api
         * 获取访问令牌
         * 此方法用于构造访问令牌的URL路径
         * @return 访问令牌的URL路径
         */
        @Override
        public String accessToken() {
            // 拼接访问令牌的URL路径
            return AuthMaxKeyRequest.SERVER_URL + "/sign/authz/oauth/v20/token";
        }

        /**
         * 获取用户信息的api
         * 实现接口方法userInfo，用于获取用户信息。
         * 该方法主要负责提供用户信息查询的API URL。
         *
         * @return String 返回用户信息查询的API URL。
         */
        @Override
        public String userInfo() {
            // 拼接用户信息查询的API URL
            return AuthMaxKeyRequest.SERVER_URL + "/sign/api/oauth/v20/me";
        }

        /**
         * 平台对应的 AuthRequest 实现类，必须继承自 {@link AuthDefaultRequest}
         * 获取目标类
         *
         * @return 目标类为AuthMaxKeyRequest，表示这是一个认证相关的请求类，继承自AuthDefaultRequest
         */
        @Override
        public Class<? extends AuthDefaultRequest> getTargetClass() {
            return AuthMaxKeyRequest.class;
        }

    }
}
